package rta.datos.conexion
{
	import flash.data.SQLConnection;
	import flash.data.SQLResult;
	import flash.data.SQLStatement;
	import flash.events.SQLErrorEvent;
	import flash.events.SQLEvent;
	
	import mx.collections.ArrayCollection;
	
	import rta.datos.to.Imagen;
	import rta.datos.to.Sonido;

	public class ImagenDB
	{
		private var conn:SQLConnection;
		private var statement:SQLStatement;
		private var _callback:Function;
		
		public function ImagenDB(conn:SQLConnection)
		{
			this.conn = conn;
			statement = new SQLStatement();
			//statement.itemClass = Imagen;
			statement.sqlConnection = conn;
			statement.addEventListener(SQLErrorEvent.ERROR, onSQLError);
		}
		
		public function set callback(value:Function):void
		{
			_callback = value;
		}
		
		
		private function onSQLError(event:SQLErrorEvent):void{
			trace(event.text);
		}
		//-------------------------------------------------
		
		
		//--OBTENER IMAGENES-----------
		public function obtenerImagenes(idCarpeta:String):void{					
			statement.text = "SELECT i.id_imagen idImagen, " +
							 "i.nombre nombreImagen, " +
							 "i.ruta_imagen rutaImagen, " +
							 "i.texto_predefinido textoPredefinido, " +
							 "i.color_predefinido colorPredefinido, " +
							 "s.id_sonido idSonido, " +
							 "s.nombre nombreSonido, " +
							 "s.ruta_sonido rutaSonido " +
							 "FROM imagen i " +
							 "JOIN sonido s ON s.id_sonido = i.id_sonido_predefinido " +
							 "WHERE i.id_carpeta = @idCarpeta";
			statement.parameters["@idCarpeta"] = idCarpeta;
			statement.addEventListener(SQLEvent.RESULT, resultObtenerImagenes);
			statement.execute();
		}
		
		private function resultObtenerImagenes(event:SQLEvent):void{
			statement.removeEventListener(SQLEvent.RESULT, resultObtenerImagenes);
			statement.clearParameters();
			var result:SQLResult = statement.getResult();
			if (result != null && this._callback != null) {  
				var resultArray:ArrayCollection = new ArrayCollection();
				for each(var item:Object in result.data){
					var sonido:Sonido = new Sonido();
					sonido.id = item.idSonido;
					sonido.nombre = item.nombreSonido;
					sonido.rutaSonido = item.rutaSonido;
					
					var imagen:Imagen = new Imagen();
					imagen.id = item.idImagen;
					imagen.nombre = item.nombreImagen;
					imagen.rutaImagen = item.rutaImagen;
					imagen.textoPredefinido = item.textoPredefinido;
					imagen.colorPredefinido = item.colorPredefinido;
					imagen.sonidoPredefinido = sonido;
					
					resultArray.addItem(imagen);
				}
				
				this._callback(resultArray);
			}
		}
		//-------------------------------------
	}
}